export type Settings = V3_3_1 | V3_3_2 | V3_3_3 | V3_4_0

export interface V3_3_1 {
  // TODO
}

export interface V3_3_2 {
  // TODO
}

export interface V3_3_3 {
  auto_migrate_settings: boolean
  allow_duplicate_hostnames: boolean
  allow_duplicate_ips: boolean
  allow_duplicate_macs: boolean
  allow_dynamic_settings: boolean
  always_write_dhcp_entries: boolean
  anamon_enabled: boolean
  auth_token_expiration: number
  authn_pam_service: string
  autoinstall_snippets_dir: string
  autoinstall_templates_dir: string
  bind_chroot_path: string
  bind_zonefile_path: string
  bind_master: string
  boot_loader_conf_template_dir: string
  bootloaders_dir?: string
  bootloaders_formats?: object
  bootloaders_modules?: Array<string>
  bootloaders_shim_folder?: string
  bootloaders_shim_file?: string
  bootloaders_ipxe_folder?: string
  syslinux_dir?: string
  syslinux_memdisk_folder?: string
  syslinux_pxelinux_folder?: string
  grub2_mod_dir?: string
  grubconfig_dir?: string
  build_reporting_enabled: boolean
  build_reporting_email: Array<string>
  build_reporting_ignorelist: Array<string>
  build_reporting_sender: string
  build_reporting_smtp_server: string
  build_reporting_subject: string
  buildisodir?: string
  cheetah_import_whitelist?: string
  client_use_https: boolean
  client_use_localhost: boolean
  cobbler_master?: string
  convert_server_to_ip?: boolean
  createrepo_flags: string
  autoinstall: string
  default_name_servers: Array<string>
  default_name_servers_search: Array<string>
  default_ownership: Array<string>
  default_password_crypted: string
  default_template_type: string
  default_virt_bridge: string
  default_virt_disk_driver?: string
  default_virt_file_size: number
  default_virt_ram: number
  default_virt_type: string
  enable_ipxe: boolean
  enable_menu: boolean
  http_port: number
  include: Array<string>
  iso_template_dir?: string
  jinja2_includedir?: string
  kernel_options: object
  ldap_anonymous_bind?: boolean
  ldap_base_dn?: string
  ldap_port?: number
  ldap_search_bind_dn?: string
  ldap_search_passwd?: string
  ldap_search_prefix?: string
  ldap_server?: string
  ldap_tls?: boolean
  ldap_tls_cacertdir?: string
  ldap_tls_cacertfile?: string
  ldap_tls_certfile?: string
  ldap_tls_keyfile?: string
  ldap_tls_reqcert?: string
  ldap_tls_cipher_suite?: string
  bind_manage_ipmi?: boolean
  manage_dhcp: boolean
  manage_dhcp_v4: boolean
  manage_dhcp_v6: boolean
  manage_dns: boolean
  manage_forward_zones: Array<string>
  manage_reverse_zones: Array<string>
  manage_genders?: boolean
  manage_rsync: boolean
  manage_tftpd: boolean
  mgmt_classes: Array<string>
  mgmt_parameters: object
  next_server_v4: string
  next_server_v6: string
  nsupdate_enabled?: boolean
  nsupdate_log?: string
  nsupdate_tsig_algorithm?: string
  nsupdate_tsig_key?: Array<string>
  power_management_default_type: string
  proxies?: Array<string>
  proxy_url_ext: string
  proxy_url_int: string
  puppet_auto_setup: boolean
  puppet_parameterized_classes?: boolean
  puppet_server?: string
  puppet_version?: number
  puppetca_path: string
  pxe_just_once: boolean
  nopxe_with_triggers: boolean
  redhat_management_permissive: boolean
  redhat_management_server: string
  redhat_management_key: string
  register_new_installs: boolean
  remove_old_puppet_certs_automatically: boolean
  replicate_repo_rsync_options: string
  replicate_rsync_options: string
  reposync_flags: string
  reposync_rsync_flags: string
  restart_dhcp: boolean
  restart_dns: boolean
  run_install_triggers: boolean
  scm_track_enabled: boolean
  scm_track_mode: string
  scm_track_author: string
  scm_push_script: string
  serializer_pretty_json: boolean
  server: string
  sign_puppet_certs_automatically: boolean
  signature_path?: string
  signature_url?: string
  tftpboot_location: string
  virt_auto_boot: boolean
  webdir: string
  webdir_whitelist: Array<string>
  xmlrpc_port: number
  yum_distro_priority: number
  yum_post_install_mirror: boolean
  yumdownloader_flags: string
  windows_enabled?: boolean
  windows_template_dir?: string
  samba_distro_share?: string
}

export interface V3_4_0 {
  // TODO
}
